home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / ccs / ccs-11tl.lha / lbl / xview / genial / ui / histo_ui.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-14  |  30.6 KB  |  1,392 lines

  1. /*
  2.  * histo_ui.c - User interface object initialization functions.
  3.  * This file was generated by `gxv' from `histo.G'.
  4.  * DO NOT EDIT BY HAND.
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <sys/param.h>
  9. #include <sys/types.h>
  10. #include <xview/xview.h>
  11. #include <xview/canvas.h>
  12. #include <xview/panel.h>
  13. #include <xview/scrollbar.h>
  14. #include <xview/svrimage.h>
  15. #include <xview/termsw.h>
  16. #include <xview/text.h>
  17. #include <xview/tty.h>
  18. #include <xview/xv_xrect.h>
  19. #include "histo_ui.h"
  20.  
  21. /*
  22.  * Initialize an instance of object `histo_ctrl'.
  23.  */
  24. histo_histo_ctrl_objects *
  25. histo_histo_ctrl_objects_initialize(ip, owner)
  26.     histo_histo_ctrl_objects    *ip;
  27.     Xv_opaque    owner;
  28. {
  29.     if (!ip && !(ip = (histo_histo_ctrl_objects *) calloc(1, sizeof (histo_histo_ctrl_objects))))
  30.         return (histo_histo_ctrl_objects *) NULL;
  31.     if (!ip->histo_ctrl)
  32.         ip->histo_ctrl = histo_histo_ctrl_histo_ctrl_create(ip, owner);
  33.     if (!ip->controls1)
  34.         ip->controls1 = histo_histo_ctrl_controls1_create(ip, ip->histo_ctrl);
  35.     if (!ip->histno)
  36.         ip->histno = histo_histo_ctrl_histno_create(ip, ip->controls1);
  37.     if (!ip->clear_all)
  38.         ip->clear_all = histo_histo_ctrl_clear_all_create(ip, ip->controls1);
  39.     if (!ip->message3)
  40.         ip->message3 = histo_histo_ctrl_message3_create(ip, ip->controls1);
  41.     if (!ip->message4)
  42.         ip->message4 = histo_histo_ctrl_message4_create(ip, ip->controls1);
  43.     if (!ip->min1)
  44.         ip->min1 = histo_histo_ctrl_min1_create(ip, ip->controls1);
  45.     if (!ip->pnt1)
  46.         ip->pnt1 = histo_histo_ctrl_pnt1_create(ip, ip->controls1);
  47.     if (!ip->sel1)
  48.         ip->sel1 = histo_histo_ctrl_sel1_create(ip, ip->controls1);
  49.     if (!ip->max1)
  50.         ip->max1 = histo_histo_ctrl_max1_create(ip, ip->controls1);
  51.     if (!ip->pnt2)
  52.         ip->pnt2 = histo_histo_ctrl_pnt2_create(ip, ip->controls1);
  53.     if (!ip->sel2)
  54.         ip->sel2 = histo_histo_ctrl_sel2_create(ip, ip->controls1);
  55.     if (!ip->min2)
  56.         ip->min2 = histo_histo_ctrl_min2_create(ip, ip->controls1);
  57.     if (!ip->max2)
  58.         ip->max2 = histo_histo_ctrl_max2_create(ip, ip->controls1);
  59.     if (!ip->pnt3)
  60.         ip->pnt3 = histo_histo_ctrl_pnt3_create(ip, ip->controls1);
  61.     if (!ip->sel3)
  62.         ip->sel3 = histo_histo_ctrl_sel3_create(ip, ip->controls1);
  63.     if (!ip->min3)
  64.         ip->min3 = histo_histo_ctrl_min3_create(ip, ip->controls1);
  65.     if (!ip->max3)
  66.         ip->max3 = histo_histo_ctrl_max3_create(ip, ip->controls1);
  67.     if (!ip->pnt4)
  68.         ip->pnt4 = histo_histo_ctrl_pnt4_create(ip, ip->controls1);
  69.     if (!ip->sel4)
  70.         ip->sel4 = histo_histo_ctrl_sel4_create(ip, ip->controls1);
  71.     if (!ip->min4)
  72.         ip->min4 = histo_histo_ctrl_min4_create(ip, ip->controls1);
  73.     if (!ip->max4)
  74.         ip->max4 = histo_histo_ctrl_max4_create(ip, ip->controls1);
  75.     if (!ip->pnt5)
  76.         ip->pnt5 = histo_histo_ctrl_pnt5_create(ip, ip->controls1);
  77.     if (!ip->sel5)
  78.         ip->sel5 = histo_histo_ctrl_sel5_create(ip, ip->controls1);
  79.     if (!ip->min5)
  80.         ip->min5 = histo_histo_ctrl_min5_create(ip, ip->controls1);
  81.     if (!ip->max5)
  82.         ip->max5 = histo_histo_ctrl_max5_create(ip, ip->controls1);
  83.     if (!ip->pnt6)
  84.         ip->pnt6 = histo_histo_ctrl_pnt6_create(ip, ip->controls1);
  85.     if (!ip->sel6)
  86.         ip->sel6 = histo_histo_ctrl_sel6_create(ip, ip->controls1);
  87.     if (!ip->min6)
  88.         ip->min6 = histo_histo_ctrl_min6_create(ip, ip->controls1);
  89.     if (!ip->max6)
  90.         ip->max6 = histo_histo_ctrl_max6_create(ip, ip->controls1);
  91.     if (!ip->pnt7)
  92.         ip->pnt7 = histo_histo_ctrl_pnt7_create(ip, ip->controls1);
  93.     if (!ip->sel7)
  94.         ip->sel7 = histo_histo_ctrl_sel7_create(ip, ip->controls1);
  95.     if (!ip->min7)
  96.         ip->min7 = histo_histo_ctrl_min7_create(ip, ip->controls1);
  97.     if (!ip->max7)
  98.         ip->max7 = histo_histo_ctrl_max7_create(ip, ip->controls1);
  99.     if (!ip->pnt8)
  100.         ip->pnt8 = histo_histo_ctrl_pnt8_create(ip, ip->controls1);
  101.     if (!ip->sel8)
  102.         ip->sel8 = histo_histo_ctrl_sel8_create(ip, ip->controls1);
  103.     if (!ip->min8)
  104.         ip->min8 = histo_histo_ctrl_min8_create(ip, ip->controls1);
  105.     if (!ip->max8)
  106.         ip->max8 = histo_histo_ctrl_max8_create(ip, ip->controls1);
  107.     if (!ip->palcanv)
  108.         ip->palcanv = histo_histo_ctrl_palcanv_create(ip, ip->histo_ctrl);
  109.     return ip;
  110. }
  111.  
  112. /*
  113.  * Create object `histo_ctrl' in the specified instance.
  114.  */
  115. Xv_opaque
  116. histo_histo_ctrl_histo_ctrl_create(ip, owner)
  117.     histo_histo_ctrl_objects    *ip;
  118.     Xv_opaque    owner;
  119. {
  120.     Xv_opaque    obj;
  121.     
  122.     obj = xv_create(owner, FRAME_CMD,
  123.         XV_KEY_DATA, INSTANCE, ip,
  124.         XV_WIDTH, 311,
  125.         XV_HEIGHT, 390,
  126.         XV_LABEL, "Histogram Color Control",
  127.         XV_SHOW, FALSE,
  128.         FRAME_SHOW_FOOTER, FALSE,
  129.         FRAME_SHOW_RESIZE_CORNER, FALSE,
  130.         FRAME_CMD_PUSHPIN_IN, TRUE,
  131.         NULL);
  132.     xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  133.     return obj;
  134. }
  135.  
  136. /*
  137.  * Create object `controls1' in the specified instance.
  138.  */
  139. Xv_opaque
  140. histo_histo_ctrl_controls1_create(ip, owner)
  141.     histo_histo_ctrl_objects    *ip;
  142.     Xv_opaque    owner;
  143. {
  144.     Xv_opaque    obj;
  145.     
  146.     obj = xv_create(owner, PANEL,
  147.         XV_KEY_DATA, INSTANCE, ip,
  148.         XV_X, 0,
  149.         XV_Y, 0,
  150.         XV_WIDTH, WIN_EXTEND_TO_EDGE,
  151.         XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  152.         WIN_BORDER, TRUE,
  153.         NULL);
  154.     return obj;
  155. }
  156.  
  157. /*
  158.  * Create object `histno' in the specified instance.
  159.  */
  160. Xv_opaque
  161. histo_histo_ctrl_histno_create(ip, owner)
  162.     histo_histo_ctrl_objects    *ip;
  163.     Xv_opaque    owner;
  164. {
  165.     extern Panel_setting    histno_proc();
  166.     Xv_opaque    obj;
  167.     
  168.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  169.         XV_KEY_DATA, INSTANCE, ip,
  170.         XV_X, 4,
  171.         XV_Y, 12,
  172.         PANEL_VALUE_DISPLAY_LENGTH, 2,
  173.         PANEL_VALUE_STORED_LENGTH, 80,
  174.         PANEL_LABEL_STRING, "Histogram:",
  175.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  176.         PANEL_MAX_VALUE, 100,
  177.         PANEL_MIN_VALUE, 0,
  178.         PANEL_VALUE, 0,
  179.         PANEL_READ_ONLY, FALSE,
  180.         PANEL_NOTIFY_PROC, histno_proc,
  181.         NULL);
  182.     return obj;
  183. }
  184.  
  185. /*
  186.  * Create object `clear_all' in the specified instance.
  187.  */
  188. Xv_opaque
  189. histo_histo_ctrl_clear_all_create(ip, owner)
  190.     histo_histo_ctrl_objects    *ip;
  191.     Xv_opaque    owner;
  192. {
  193.     extern void        clear_histo_color_proc();
  194.     Xv_opaque    obj;
  195.     
  196.     obj = xv_create(owner, PANEL_BUTTON,
  197.         XV_KEY_DATA, INSTANCE, ip,
  198.         XV_X, 236,
  199.         XV_Y, 12,
  200.         PANEL_LABEL_STRING, "Clear All",
  201.         PANEL_NOTIFY_PROC, clear_histo_color_proc,
  202.         NULL);
  203.     return obj;
  204. }
  205.  
  206. /*
  207.  * Create object `message3' in the specified instance.
  208.  */
  209. Xv_opaque
  210. histo_histo_ctrl_message3_create(ip, owner)
  211.     histo_histo_ctrl_objects    *ip;
  212.     Xv_opaque    owner;
  213. {
  214.     Xv_opaque    obj;
  215.     
  216.     obj = xv_create(owner, PANEL_MESSAGE,
  217.         XV_KEY_DATA, INSTANCE, ip,
  218.         XV_X, 4,
  219.         XV_Y, 40,
  220.         PANEL_LABEL_STRING, "Paint",
  221.         PANEL_LABEL_BOLD, TRUE,
  222.         NULL);
  223.     return obj;
  224. }
  225.  
  226. /*
  227.  * Create object `message4' in the specified instance.
  228.  */
  229. Xv_opaque
  230. histo_histo_ctrl_message4_create(ip, owner)
  231.     histo_histo_ctrl_objects    *ip;
  232.     Xv_opaque    owner;
  233. {
  234.     Xv_opaque    obj;
  235.     
  236.     obj = xv_create(owner, PANEL_MESSAGE,
  237.         XV_KEY_DATA, INSTANCE, ip,
  238.         XV_X, 100,
  239.         XV_Y, 40,
  240.         PANEL_LABEL_STRING, "Select",
  241.         PANEL_LABEL_BOLD, TRUE,
  242.         NULL);
  243.     return obj;
  244. }
  245.  
  246. /*
  247.  * Create object `min1' in the specified instance.
  248.  */
  249. Xv_opaque
  250. histo_histo_ctrl_min1_create(ip, owner)
  251.     histo_histo_ctrl_objects    *ip;
  252.     Xv_opaque    owner;
  253. {
  254.     extern Panel_setting    interval1_proc();
  255.     Xv_opaque    obj;
  256.     
  257.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  258.         XV_KEY_DATA, INSTANCE, ip,
  259.         XV_X, 156,
  260.         XV_Y, 60,
  261.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  262.         PANEL_VALUE_STORED_LENGTH, 80,
  263.         PANEL_LABEL_STRING, "Min:",
  264.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  265.         PANEL_MAX_VALUE, 100000000,
  266.         PANEL_MIN_VALUE, 0,
  267.         PANEL_VALUE, 0,
  268.         PANEL_READ_ONLY, FALSE,
  269.         PANEL_NOTIFY_PROC, interval1_proc,
  270.         NULL);
  271.     return obj;
  272. }
  273.  
  274. /*
  275.  * Create object `pnt1' in the specified instance.
  276.  */
  277. Xv_opaque
  278. histo_histo_ctrl_pnt1_create(ip, owner)
  279.     histo_histo_ctrl_objects    *ip;
  280.     Xv_opaque    owner;
  281. {
  282.     extern void        histo_color_paint_proc();
  283.     Xv_opaque    obj;
  284.     
  285.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  286.         XV_KEY_DATA, INSTANCE, ip,
  287.         XV_X, 12,
  288.         XV_Y, 64,
  289.         PANEL_CHOICE_NCOLS, 1,
  290.         PANEL_LAYOUT, PANEL_VERTICAL,
  291.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  292.         PANEL_CHOICE_STRING, 0, "",
  293.         PANEL_VALUE, 0,
  294.         NULL);
  295.     return obj;
  296. }
  297.  
  298. /*
  299.  * Create object `sel1' in the specified instance.
  300.  */
  301. Xv_opaque
  302. histo_histo_ctrl_sel1_create(ip, owner)
  303.     histo_histo_ctrl_objects    *ip;
  304.     Xv_opaque    owner;
  305. {
  306.     extern void        histo_color_select_proc();
  307.     Xv_opaque    obj;
  308.     
  309.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  310.         XV_KEY_DATA, INSTANCE, ip,
  311.         XV_X, 104,
  312.         XV_Y, 64,
  313.         PANEL_CHOICE_NCOLS, 1,
  314.         PANEL_LAYOUT, PANEL_VERTICAL,
  315.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  316.         PANEL_CHOICE_STRING, 0, "",
  317.         PANEL_VALUE, 0,
  318.         NULL);
  319.     return obj;
  320. }
  321.  
  322. /*
  323.  * Create object `max1' in the specified instance.
  324.  */
  325. Xv_opaque
  326. histo_histo_ctrl_max1_create(ip, owner)
  327.     histo_histo_ctrl_objects    *ip;
  328.     Xv_opaque    owner;
  329. {
  330.     extern Panel_setting    interval1_proc();
  331.     Xv_opaque    obj;
  332.     
  333.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  334.         XV_KEY_DATA, INSTANCE, ip,
  335.         XV_X, 156,
  336.         XV_Y, 76,
  337.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  338.         PANEL_VALUE_STORED_LENGTH, 80,
  339.         PANEL_LABEL_STRING, "Max:",
  340.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  341.         PANEL_MAX_VALUE, 100000000,
  342.         PANEL_MIN_VALUE, 0,
  343.         PANEL_VALUE, 0,
  344.         PANEL_READ_ONLY, FALSE,
  345.         PANEL_NOTIFY_PROC, interval1_proc,
  346.         NULL);
  347.     return obj;
  348. }
  349.  
  350. /*
  351.  * Create object `pnt2' in the specified instance.
  352.  */
  353. Xv_opaque
  354. histo_histo_ctrl_pnt2_create(ip, owner)
  355.     histo_histo_ctrl_objects    *ip;
  356.     Xv_opaque    owner;
  357. {
  358.     extern void        histo_color_paint_proc();
  359.     Xv_opaque    obj;
  360.     
  361.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  362.         XV_KEY_DATA, INSTANCE, ip,
  363.         XV_X, 12,
  364.         XV_Y, 104,
  365.         PANEL_CHOICE_NROWS, 1,
  366.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  367.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  368.         PANEL_CHOICE_STRING, 0, "",
  369.         PANEL_VALUE, 0,
  370.         NULL);
  371.     return obj;
  372. }
  373.  
  374. /*
  375.  * Create object `sel2' in the specified instance.
  376.  */
  377. Xv_opaque
  378. histo_histo_ctrl_sel2_create(ip, owner)
  379.     histo_histo_ctrl_objects    *ip;
  380.     Xv_opaque    owner;
  381. {
  382.     extern void        histo_color_select_proc();
  383.     Xv_opaque    obj;
  384.     
  385.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  386.         XV_KEY_DATA, INSTANCE, ip,
  387.         XV_X, 104,
  388.         XV_Y, 104,
  389.         PANEL_CHOICE_NROWS, 1,
  390.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  391.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  392.         PANEL_CHOICE_STRING, 0, "",
  393.         PANEL_VALUE, 0,
  394.         NULL);
  395.     return obj;
  396. }
  397.  
  398. /*
  399.  * Create object `min2' in the specified instance.
  400.  */
  401. Xv_opaque
  402. histo_histo_ctrl_min2_create(ip, owner)
  403.     histo_histo_ctrl_objects    *ip;
  404.     Xv_opaque    owner;
  405. {
  406.     extern Panel_setting    interval2_proc();
  407.     Xv_opaque    obj;
  408.     
  409.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  410.         XV_KEY_DATA, INSTANCE, ip,
  411.         XV_X, 156,
  412.         XV_Y, 104,
  413.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  414.         PANEL_VALUE_STORED_LENGTH, 80,
  415.         PANEL_LABEL_STRING, "Min:",
  416.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  417.         PANEL_MAX_VALUE, 100000000,
  418.         PANEL_MIN_VALUE, 0,
  419.         PANEL_VALUE, 0,
  420.         PANEL_READ_ONLY, FALSE,
  421.         PANEL_NOTIFY_PROC, interval2_proc,
  422.         NULL);
  423.     return obj;
  424. }
  425.  
  426. /*
  427.  * Create object `max2' in the specified instance.
  428.  */
  429. Xv_opaque
  430. histo_histo_ctrl_max2_create(ip, owner)
  431.     histo_histo_ctrl_objects    *ip;
  432.     Xv_opaque    owner;
  433. {
  434.     extern Panel_setting    interval2_proc();
  435.     Xv_opaque    obj;
  436.     
  437.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  438.         XV_KEY_DATA, INSTANCE, ip,
  439.         XV_X, 156,
  440.         XV_Y, 120,
  441.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  442.         PANEL_VALUE_STORED_LENGTH, 80,
  443.         PANEL_LABEL_STRING, "Max:",
  444.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  445.         PANEL_MAX_VALUE, 100000000,
  446.         PANEL_MIN_VALUE, 0,
  447.         PANEL_VALUE, 0,
  448.         PANEL_READ_ONLY, FALSE,
  449.         PANEL_NOTIFY_PROC, interval2_proc,
  450.         NULL);
  451.     return obj;
  452. }
  453.  
  454. /*
  455.  * Create object `pnt3' in the specified instance.
  456.  */
  457. Xv_opaque
  458. histo_histo_ctrl_pnt3_create(ip, owner)
  459.     histo_histo_ctrl_objects    *ip;
  460.     Xv_opaque    owner;
  461. {
  462.     extern void        histo_color_paint_proc();
  463.     Xv_opaque    obj;
  464.     
  465.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  466.         XV_KEY_DATA, INSTANCE, ip,
  467.         XV_X, 12,
  468.         XV_Y, 144,
  469.         PANEL_CHOICE_NROWS, 1,
  470.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  471.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  472.         PANEL_CHOICE_STRING, 0, "",
  473.         PANEL_VALUE, 0,
  474.         NULL);
  475.     return obj;
  476. }
  477.  
  478. /*
  479.  * Create object `sel3' in the specified instance.
  480.  */
  481. Xv_opaque
  482. histo_histo_ctrl_sel3_create(ip, owner)
  483.     histo_histo_ctrl_objects    *ip;
  484.     Xv_opaque    owner;
  485. {
  486.     extern void        histo_color_select_proc();
  487.     Xv_opaque    obj;
  488.     
  489.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  490.         XV_KEY_DATA, INSTANCE, ip,
  491.         XV_X, 104,
  492.         XV_Y, 144,
  493.         PANEL_CHOICE_NROWS, 1,
  494.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  495.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  496.         PANEL_CHOICE_STRING, 0, "",
  497.         PANEL_VALUE, 0,
  498.         NULL);
  499.     return obj;
  500. }
  501.  
  502. /*
  503.  * Create object `min3' in the specified instance.
  504.  */
  505. Xv_opaque
  506. histo_histo_ctrl_min3_create(ip, owner)
  507.     histo_histo_ctrl_objects    *ip;
  508.     Xv_opaque    owner;
  509. {
  510.     extern Panel_setting    interval3_proc();
  511.     Xv_opaque    obj;
  512.     
  513.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  514.         XV_KEY_DATA, INSTANCE, ip,
  515.         XV_X, 156,
  516.         XV_Y, 144,
  517.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  518.         PANEL_VALUE_STORED_LENGTH, 80,
  519.         PANEL_LABEL_STRING, "Min:",
  520.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  521.         PANEL_MAX_VALUE, 100000000,
  522.         PANEL_MIN_VALUE, 0,
  523.         PANEL_VALUE, 0,
  524.         PANEL_READ_ONLY, FALSE,
  525.         PANEL_NOTIFY_PROC, interval3_proc,
  526.         NULL);
  527.     return obj;
  528. }
  529.  
  530. /*
  531.  * Create object `max3' in the specified instance.
  532.  */
  533. Xv_opaque
  534. histo_histo_ctrl_max3_create(ip, owner)
  535.     histo_histo_ctrl_objects    *ip;
  536.     Xv_opaque    owner;
  537. {
  538.     extern Panel_setting    interval3_proc();
  539.     Xv_opaque    obj;
  540.     
  541.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  542.         XV_KEY_DATA, INSTANCE, ip,
  543.         XV_X, 156,
  544.         XV_Y, 160,
  545.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  546.         PANEL_VALUE_STORED_LENGTH, 80,
  547.         PANEL_LABEL_STRING, "Max:",
  548.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  549.         PANEL_MAX_VALUE, 100000000,
  550.         PANEL_MIN_VALUE, 0,
  551.         PANEL_VALUE, 0,
  552.         PANEL_READ_ONLY, FALSE,
  553.         PANEL_NOTIFY_PROC, interval3_proc,
  554.         NULL);
  555.     return obj;
  556. }
  557.  
  558. /*
  559.  * Create object `pnt4' in the specified instance.
  560.  */
  561. Xv_opaque
  562. histo_histo_ctrl_pnt4_create(ip, owner)
  563.     histo_histo_ctrl_objects    *ip;
  564.     Xv_opaque    owner;
  565. {
  566.     extern void        histo_color_paint_proc();
  567.     Xv_opaque    obj;
  568.     
  569.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  570.         XV_KEY_DATA, INSTANCE, ip,
  571.         XV_X, 12,
  572.         XV_Y, 184,
  573.         PANEL_CHOICE_NROWS, 1,
  574.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  575.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  576.         PANEL_CHOICE_STRING, 0, "",
  577.         PANEL_VALUE, 0,
  578.         NULL);
  579.     return obj;
  580. }
  581.  
  582. /*
  583.  * Create object `sel4' in the specified instance.
  584.  */
  585. Xv_opaque
  586. histo_histo_ctrl_sel4_create(ip, owner)
  587.     histo_histo_ctrl_objects    *ip;
  588.     Xv_opaque    owner;
  589. {
  590.     extern void        histo_color_select_proc();
  591.     Xv_opaque    obj;
  592.     
  593.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  594.         XV_KEY_DATA, INSTANCE, ip,
  595.         XV_X, 104,
  596.         XV_Y, 184,
  597.         PANEL_CHOICE_NROWS, 1,
  598.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  599.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  600.         PANEL_CHOICE_STRING, 0, "",
  601.         PANEL_VALUE, 0,
  602.         NULL);
  603.     return obj;
  604. }
  605.  
  606. /*
  607.  * Create object `min4' in the specified instance.
  608.  */
  609. Xv_opaque
  610. histo_histo_ctrl_min4_create(ip, owner)
  611.     histo_histo_ctrl_objects    *ip;
  612.     Xv_opaque    owner;
  613. {
  614.     extern Panel_setting    interval4_proc();
  615.     Xv_opaque    obj;
  616.     
  617.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  618.         XV_KEY_DATA, INSTANCE, ip,
  619.         XV_X, 156,
  620.         XV_Y, 184,
  621.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  622.         PANEL_VALUE_STORED_LENGTH, 80,
  623.         PANEL_LABEL_STRING, "Min:",
  624.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  625.         PANEL_MAX_VALUE, 100000000,
  626.         PANEL_MIN_VALUE, 0,
  627.         PANEL_VALUE, 0,
  628.         PANEL_READ_ONLY, FALSE,
  629.         PANEL_NOTIFY_PROC, interval4_proc,
  630.         NULL);
  631.     return obj;
  632. }
  633.  
  634. /*
  635.  * Create object `max4' in the specified instance.
  636.  */
  637. Xv_opaque
  638. histo_histo_ctrl_max4_create(ip, owner)
  639.     histo_histo_ctrl_objects    *ip;
  640.     Xv_opaque    owner;
  641. {
  642.     extern Panel_setting    interval4_proc();
  643.     Xv_opaque    obj;
  644.     
  645.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  646.         XV_KEY_DATA, INSTANCE, ip,
  647.         XV_X, 156,
  648.         XV_Y, 200,
  649.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  650.         PANEL_VALUE_STORED_LENGTH, 80,
  651.         PANEL_LABEL_STRING, "Max:",
  652.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  653.         PANEL_MAX_VALUE, 100000000,
  654.         PANEL_MIN_VALUE, 0,
  655.         PANEL_VALUE, 0,
  656.         PANEL_READ_ONLY, FALSE,
  657.         PANEL_NOTIFY_PROC, interval4_proc,
  658.         NULL);
  659.     return obj;
  660. }
  661.  
  662. /*
  663.  * Create object `pnt5' in the specified instance.
  664.  */
  665. Xv_opaque
  666. histo_histo_ctrl_pnt5_create(ip, owner)
  667.     histo_histo_ctrl_objects    *ip;
  668.     Xv_opaque    owner;
  669. {
  670.     extern void        histo_color_paint_proc();
  671.     Xv_opaque    obj;
  672.     
  673.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  674.         XV_KEY_DATA, INSTANCE, ip,
  675.         XV_X, 12,
  676.         XV_Y, 224,
  677.         PANEL_CHOICE_NROWS, 1,
  678.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  679.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  680.         PANEL_CHOICE_STRING, 0, "",
  681.         PANEL_VALUE, 0,
  682.         NULL);
  683.     return obj;
  684. }
  685.  
  686. /*
  687.  * Create object `sel5' in the specified instance.
  688.  */
  689. Xv_opaque
  690. histo_histo_ctrl_sel5_create(ip, owner)
  691.     histo_histo_ctrl_objects    *ip;
  692.     Xv_opaque    owner;
  693. {
  694.     extern void        histo_color_select_proc();
  695.     Xv_opaque    obj;
  696.     
  697.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  698.         XV_KEY_DATA, INSTANCE, ip,
  699.         XV_X, 104,
  700.         XV_Y, 224,
  701.         PANEL_CHOICE_NROWS, 1,
  702.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  703.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  704.         PANEL_CHOICE_STRING, 0, "",
  705.         PANEL_VALUE, 0,
  706.         NULL);
  707.     return obj;
  708. }
  709.  
  710. /*
  711.  * Create object `min5' in the specified instance.
  712.  */
  713. Xv_opaque
  714. histo_histo_ctrl_min5_create(ip, owner)
  715.     histo_histo_ctrl_objects    *ip;
  716.     Xv_opaque    owner;
  717. {
  718.     extern Panel_setting    interval5_proc();
  719.     Xv_opaque    obj;
  720.     
  721.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  722.         XV_KEY_DATA, INSTANCE, ip,
  723.         XV_X, 156,
  724.         XV_Y, 224,
  725.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  726.         PANEL_VALUE_STORED_LENGTH, 80,
  727.         PANEL_LABEL_STRING, "Min:",
  728.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  729.         PANEL_MAX_VALUE, 100000000,
  730.         PANEL_MIN_VALUE, 0,
  731.         PANEL_VALUE, 0,
  732.         PANEL_READ_ONLY, FALSE,
  733.         PANEL_NOTIFY_PROC, interval5_proc,
  734.         NULL);
  735.     return obj;
  736. }
  737.  
  738. /*
  739.  * Create object `max5' in the specified instance.
  740.  */
  741. Xv_opaque
  742. histo_histo_ctrl_max5_create(ip, owner)
  743.     histo_histo_ctrl_objects    *ip;
  744.     Xv_opaque    owner;
  745. {
  746.     extern Panel_setting    interval5_proc();
  747.     Xv_opaque    obj;
  748.     
  749.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  750.         XV_KEY_DATA, INSTANCE, ip,
  751.         XV_X, 156,
  752.         XV_Y, 240,
  753.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  754.         PANEL_VALUE_STORED_LENGTH, 80,
  755.         PANEL_LABEL_STRING, "Max:",
  756.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  757.         PANEL_MAX_VALUE, 100000000,
  758.         PANEL_MIN_VALUE, 0,
  759.         PANEL_VALUE, 0,
  760.         PANEL_READ_ONLY, FALSE,
  761.         PANEL_NOTIFY_PROC, interval5_proc,
  762.         NULL);
  763.     return obj;
  764. }
  765.  
  766. /*
  767.  * Create object `pnt6' in the specified instance.
  768.  */
  769. Xv_opaque
  770. histo_histo_ctrl_pnt6_create(ip, owner)
  771.     histo_histo_ctrl_objects    *ip;
  772.     Xv_opaque    owner;
  773. {
  774.     extern void        histo_color_paint_proc();
  775.     Xv_opaque    obj;
  776.     
  777.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  778.         XV_KEY_DATA, INSTANCE, ip,
  779.         XV_X, 12,
  780.         XV_Y, 264,
  781.         PANEL_CHOICE_NROWS, 1,
  782.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  783.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  784.         PANEL_CHOICE_STRING, 0, "",
  785.         PANEL_VALUE, 0,
  786.         NULL);
  787.     return obj;
  788. }
  789.  
  790. /*
  791.  * Create object `sel6' in the specified instance.
  792.  */
  793. Xv_opaque
  794. histo_histo_ctrl_sel6_create(ip, owner)
  795.     histo_histo_ctrl_objects    *ip;
  796.     Xv_opaque    owner;
  797. {
  798.     extern void        histo_color_select_proc();
  799.     Xv_opaque    obj;
  800.     
  801.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  802.         XV_KEY_DATA, INSTANCE, ip,
  803.         XV_X, 104,
  804.         XV_Y, 264,
  805.         PANEL_CHOICE_NROWS, 1,
  806.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  807.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  808.         PANEL_CHOICE_STRING, 0, "",
  809.         PANEL_VALUE, 0,
  810.         NULL);
  811.     return obj;
  812. }
  813.  
  814. /*
  815.  * Create object `min6' in the specified instance.
  816.  */
  817. Xv_opaque
  818. histo_histo_ctrl_min6_create(ip, owner)
  819.     histo_histo_ctrl_objects    *ip;
  820.     Xv_opaque    owner;
  821. {
  822.     extern Panel_setting    interval6_proc();
  823.     Xv_opaque    obj;
  824.     
  825.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  826.         XV_KEY_DATA, INSTANCE, ip,
  827.         XV_X, 156,
  828.         XV_Y, 264,
  829.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  830.         PANEL_VALUE_STORED_LENGTH, 80,
  831.         PANEL_LABEL_STRING, "Min:",
  832.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  833.         PANEL_MAX_VALUE, 100000000,
  834.         PANEL_MIN_VALUE, 0,
  835.         PANEL_VALUE, 0,
  836.         PANEL_READ_ONLY, FALSE,
  837.         PANEL_NOTIFY_PROC, interval6_proc,
  838.         NULL);
  839.     return obj;
  840. }
  841.  
  842. /*
  843.  * Create object `max6' in the specified instance.
  844.  */
  845. Xv_opaque
  846. histo_histo_ctrl_max6_create(ip, owner)
  847.     histo_histo_ctrl_objects    *ip;
  848.     Xv_opaque    owner;
  849. {
  850.     extern Panel_setting    interval6_proc();
  851.     Xv_opaque    obj;
  852.     
  853.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  854.         XV_KEY_DATA, INSTANCE, ip,
  855.         XV_X, 156,
  856.         XV_Y, 280,
  857.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  858.         PANEL_VALUE_STORED_LENGTH, 80,
  859.         PANEL_LABEL_STRING, "Max:",
  860.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  861.         PANEL_MAX_VALUE, 100000000,
  862.         PANEL_MIN_VALUE, 0,
  863.         PANEL_VALUE, 0,
  864.         PANEL_READ_ONLY, FALSE,
  865.         PANEL_NOTIFY_PROC, interval6_proc,
  866.         NULL);
  867.     return obj;
  868. }
  869.  
  870. /*
  871.  * Create object `pnt7' in the specified instance.
  872.  */
  873. Xv_opaque
  874. histo_histo_ctrl_pnt7_create(ip, owner)
  875.     histo_histo_ctrl_objects    *ip;
  876.     Xv_opaque    owner;
  877. {
  878.     extern void        histo_color_paint_proc();
  879.     Xv_opaque    obj;
  880.     
  881.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  882.         XV_KEY_DATA, INSTANCE, ip,
  883.         XV_X, 12,
  884.         XV_Y, 304,
  885.         PANEL_CHOICE_NROWS, 1,
  886.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  887.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  888.         PANEL_CHOICE_STRING, 0, "",
  889.         PANEL_VALUE, 0,
  890.         NULL);
  891.     return obj;
  892. }
  893.  
  894. /*
  895.  * Create object `sel7' in the specified instance.
  896.  */
  897. Xv_opaque
  898. histo_histo_ctrl_sel7_create(ip, owner)
  899.     histo_histo_ctrl_objects    *ip;
  900.     Xv_opaque    owner;
  901. {
  902.     extern void        histo_color_select_proc();
  903.     Xv_opaque    obj;
  904.     
  905.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  906.         XV_KEY_DATA, INSTANCE, ip,
  907.         XV_X, 104,
  908.         XV_Y, 304,
  909.         PANEL_CHOICE_NROWS, 1,
  910.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  911.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  912.         PANEL_CHOICE_STRING, 0, "",
  913.         PANEL_VALUE, 0,
  914.         NULL);
  915.     return obj;
  916. }
  917.  
  918. /*
  919.  * Create object `min7' in the specified instance.
  920.  */
  921. Xv_opaque
  922. histo_histo_ctrl_min7_create(ip, owner)
  923.     histo_histo_ctrl_objects    *ip;
  924.     Xv_opaque    owner;
  925. {
  926.     extern Panel_setting    interval7_proc();
  927.     Xv_opaque    obj;
  928.     
  929.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  930.         XV_KEY_DATA, INSTANCE, ip,
  931.         XV_X, 156,
  932.         XV_Y, 304,
  933.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  934.         PANEL_VALUE_STORED_LENGTH, 80,
  935.         PANEL_LABEL_STRING, "Min:",
  936.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  937.         PANEL_MAX_VALUE, 100000000,
  938.         PANEL_MIN_VALUE, 0,
  939.         PANEL_VALUE, 0,
  940.         PANEL_READ_ONLY, FALSE,
  941.         PANEL_NOTIFY_PROC, interval7_proc,
  942.         NULL);
  943.     return obj;
  944. }
  945.  
  946. /*
  947.  * Create object `max7' in the specified instance.
  948.  */
  949. Xv_opaque
  950. histo_histo_ctrl_max7_create(ip, owner)
  951.     histo_histo_ctrl_objects    *ip;
  952.     Xv_opaque    owner;
  953. {
  954.     extern Panel_setting    interval7_proc();
  955.     Xv_opaque    obj;
  956.     
  957.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  958.         XV_KEY_DATA, INSTANCE, ip,
  959.         XV_X, 156,
  960.         XV_Y, 320,
  961.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  962.         PANEL_VALUE_STORED_LENGTH, 80,
  963.         PANEL_LABEL_STRING, "Max:",
  964.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  965.         PANEL_MAX_VALUE, 100000000,
  966.         PANEL_MIN_VALUE, 0,
  967.         PANEL_VALUE, 0,
  968.         PANEL_READ_ONLY, FALSE,
  969.         PANEL_NOTIFY_PROC, interval7_proc,
  970.         NULL);
  971.     return obj;
  972. }
  973.  
  974. /*
  975.  * Create object `pnt8' in the specified instance.
  976.  */
  977. Xv_opaque
  978. histo_histo_ctrl_pnt8_create(ip, owner)
  979.     histo_histo_ctrl_objects    *ip;
  980.     Xv_opaque    owner;
  981. {
  982.     extern void        histo_color_paint_proc();
  983.     Xv_opaque    obj;
  984.     
  985.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  986.         XV_KEY_DATA, INSTANCE, ip,
  987.         XV_X, 12,
  988.         XV_Y, 344,
  989.         PANEL_CHOICE_NROWS, 1,
  990.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  991.         PANEL_NOTIFY_PROC, histo_color_paint_proc,
  992.         PANEL_CHOICE_STRING, 0, "",
  993.         PANEL_VALUE, 0,
  994.         NULL);
  995.     return obj;
  996. }
  997.  
  998. /*
  999.  * Create object `sel8' in the specified instance.
  1000.  */
  1001. Xv_opaque
  1002. histo_histo_ctrl_sel8_create(ip, owner)
  1003.     histo_histo_ctrl_objects    *ip;
  1004.     Xv_opaque    owner;
  1005. {
  1006.     extern void        histo_color_select_proc();
  1007.     Xv_opaque    obj;
  1008.     
  1009.     obj = xv_create(owner, PANEL_TOGGLE, PANEL_FEEDBACK, PANEL_MARKED,
  1010.         XV_KEY_DATA, INSTANCE, ip,
  1011.         XV_X, 104,
  1012.         XV_Y, 344,
  1013.         PANEL_CHOICE_NROWS, 1,
  1014.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  1015.         PANEL_NOTIFY_PROC, histo_color_select_proc,
  1016.         PANEL_CHOICE_STRING, 0, "",
  1017.         PANEL_VALUE, 0,
  1018.         NULL);
  1019.     return obj;
  1020. }
  1021.  
  1022. /*
  1023.  * Create object `min8' in the specified instance.
  1024.  */
  1025. Xv_opaque
  1026. histo_histo_ctrl_min8_create(ip, owner)
  1027.     histo_histo_ctrl_objects    *ip;
  1028.     Xv_opaque    owner;
  1029. {
  1030.     extern Panel_setting    interval8_proc();
  1031.     Xv_opaque    obj;
  1032.     
  1033.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  1034.         XV_KEY_DATA, INSTANCE, ip,
  1035.         XV_X, 156,
  1036.         XV_Y, 344,
  1037.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  1038.         PANEL_VALUE_STORED_LENGTH, 80,
  1039.         PANEL_LABEL_STRING, "Min:",
  1040.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  1041.         PANEL_MAX_VALUE, 100000000,
  1042.         PANEL_MIN_VALUE, 0,
  1043.         PANEL_VALUE, 0,
  1044.         PANEL_READ_ONLY, FALSE,
  1045.         PANEL_NOTIFY_PROC, interval8_proc,
  1046.         NULL);
  1047.     return obj;
  1048. }
  1049.  
  1050. /*
  1051.  * Create object `max8' in the specified instance.
  1052.  */
  1053. Xv_opaque
  1054. histo_histo_ctrl_max8_create(ip, owner)
  1055.     histo_histo_ctrl_objects    *ip;
  1056.     Xv_opaque    owner;
  1057. {
  1058.     extern Panel_setting    interval8_proc();
  1059.     Xv_opaque    obj;
  1060.     
  1061.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  1062.         XV_KEY_DATA, INSTANCE, ip,
  1063.         XV_X, 156,
  1064.         XV_Y, 360,
  1065.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  1066.         PANEL_VALUE_STORED_LENGTH, 80,
  1067.         PANEL_LABEL_STRING, "Max:",
  1068.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  1069.         PANEL_MAX_VALUE, 100000000,
  1070.         PANEL_MIN_VALUE, 0,
  1071.         PANEL_VALUE, 0,
  1072.         PANEL_READ_ONLY, FALSE,
  1073.         PANEL_NOTIFY_PROC, interval8_proc,
  1074.         NULL);
  1075.     return obj;
  1076. }
  1077.  
  1078. /*
  1079.  * Create object `palcanv' in the specified instance.
  1080.  */
  1081. Xv_opaque
  1082. histo_histo_ctrl_palcanv_create(ip, owner)
  1083.     histo_histo_ctrl_objects    *ip;
  1084.     Xv_opaque    owner;
  1085. {
  1086.     extern void    palcanv_repaint_proc();
  1087.     Xv_opaque    obj;
  1088.     
  1089.     obj = xv_create(owner, CANVAS,
  1090.         XV_KEY_DATA, INSTANCE, ip,
  1091.         XV_X, 44,
  1092.         XV_Y, 58,
  1093.         XV_WIDTH, 43,
  1094.         XV_HEIGHT, 323,
  1095.         CANVAS_REPAINT_PROC, palcanv_repaint_proc,
  1096.         CANVAS_X_PAINT_WINDOW, TRUE,
  1097.         NULL);
  1098.     /*
  1099.      * This line is here for backwards compatibility. It will be
  1100.      * removed for the next release.
  1101.      */
  1102.     xv_set(canvas_paint_window(obj), XV_KEY_DATA, INSTANCE, ip, NULL);
  1103.     return obj;
  1104. }
  1105.  
  1106. /*
  1107.  * Initialize an instance of object `display'.
  1108.  */
  1109. histo_display_objects *
  1110. histo_display_objects_initialize(ip, owner)
  1111.     histo_display_objects    *ip;
  1112.     Xv_opaque    owner;
  1113. {
  1114.     if (!ip && !(ip = (histo_display_objects *) calloc(1, sizeof (histo_display_objects))))
  1115.         return (histo_display_objects *) NULL;
  1116.     if (!ip->display)
  1117.         ip->display = histo_display_display_create(ip, owner);
  1118.     if (!ip->controls2)
  1119.         ip->controls2 = histo_display_controls2_create(ip, ip->display);
  1120.     if (!ip->message1)
  1121.         ip->message1 = histo_display_message1_create(ip, ip->controls2);
  1122.     if (!ip->color_histo)
  1123.         ip->color_histo = histo_display_color_histo_create(ip, ip->controls2);
  1124.     if (!ip->refresh)
  1125.         ip->refresh = histo_display_refresh_create(ip, ip->controls2);
  1126.     if (!ip->message2)
  1127.         ip->message2 = histo_display_message2_create(ip, ip->controls2);
  1128.     if (!ip->magnify)
  1129.         ip->magnify = histo_display_magnify_create(ip, ip->controls2);
  1130.     if (!ip->unmagnify)
  1131.         ip->unmagnify = histo_display_unmagnify_create(ip, ip->controls2);
  1132.     if (!ip->restore)
  1133.         ip->restore = histo_display_restore_create(ip, ip->controls2);
  1134.     if (!ip->message5)
  1135.         ip->message5 = histo_display_message5_create(ip, ip->controls2);
  1136.     if (!ip->histocanv)
  1137.         ip->histocanv = histo_display_histocanv_create(ip, ip->display);
  1138.     return ip;
  1139. }
  1140.  
  1141. /*
  1142.  * Create object `display' in the specified instance.
  1143.  */
  1144. Xv_opaque
  1145. histo_display_display_create(ip, owner)
  1146.     histo_display_objects    *ip;
  1147.     Xv_opaque    owner;
  1148. {
  1149.     Xv_opaque    obj;
  1150.     
  1151.     obj = xv_create(owner, FRAME,
  1152.         XV_KEY_DATA, INSTANCE, ip,
  1153.         XV_WIDTH, 565,
  1154.         XV_HEIGHT, 419,
  1155.         XV_LABEL, "Histogram Display",
  1156.         XV_SHOW, FALSE,
  1157.         FRAME_SHOW_FOOTER, FALSE,
  1158.         FRAME_SHOW_RESIZE_CORNER, FALSE,
  1159.         NULL);
  1160.     return obj;
  1161. }
  1162.  
  1163. /*
  1164.  * Create object `controls2' in the specified instance.
  1165.  */
  1166. Xv_opaque
  1167. histo_display_controls2_create(ip, owner)
  1168.     histo_display_objects    *ip;
  1169.     Xv_opaque    owner;
  1170. {
  1171.     Xv_opaque    obj;
  1172.     
  1173.     obj = xv_create(owner, PANEL,
  1174.         XV_KEY_DATA, INSTANCE, ip,
  1175.         XV_X, 0,
  1176.         XV_Y, 0,
  1177.         XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1178.         XV_HEIGHT, 72,
  1179.         WIN_BORDER, TRUE,
  1180.         NULL);
  1181.     return obj;
  1182. }
  1183.  
  1184. /*
  1185.  * Create object `message1' in the specified instance.
  1186.  */
  1187. Xv_opaque
  1188. histo_display_message1_create(ip, owner)
  1189.     histo_display_objects    *ip;
  1190.     Xv_opaque    owner;
  1191. {
  1192.     Xv_opaque    obj;
  1193.     
  1194.     obj = xv_create(owner, PANEL_MESSAGE,
  1195.         XV_KEY_DATA, INSTANCE, ip,
  1196.         XV_X, 32,
  1197.         XV_Y, 8,
  1198.         PANEL_LABEL_STRING, "Pixel Value: NNN",
  1199.         PANEL_LABEL_BOLD, TRUE,
  1200.         NULL);
  1201.     return obj;
  1202. }
  1203.  
  1204. /*
  1205.  * Create object `color_histo' in the specified instance.
  1206.  */
  1207. Xv_opaque
  1208. histo_display_color_histo_create(ip, owner)
  1209.     histo_display_objects    *ip;
  1210.     Xv_opaque    owner;
  1211. {
  1212.     extern void        histo_color_opts();
  1213.     Xv_opaque    obj;
  1214.     
  1215.     obj = xv_create(owner, PANEL_BUTTON,
  1216.         XV_KEY_DATA, INSTANCE, ip,
  1217.         XV_X, 284,
  1218.         XV_Y, 8,
  1219.         PANEL_LABEL_STRING, "Color...",
  1220.         PANEL_NOTIFY_PROC, histo_color_opts,
  1221.         NULL);
  1222.     return obj;
  1223. }
  1224.  
  1225. /*
  1226.  * Create object `refresh' in the specified instance.
  1227.  */
  1228. Xv_opaque
  1229. histo_display_refresh_create(ip, owner)
  1230.     histo_display_objects    *ip;
  1231.     Xv_opaque    owner;
  1232. {
  1233.     extern void        histo_refresh_proc();
  1234.     Xv_opaque    obj;
  1235.     
  1236.     obj = xv_create(owner, PANEL_BUTTON,
  1237.         XV_KEY_DATA, INSTANCE, ip,
  1238.         XV_X, 488,
  1239.         XV_Y, 8,
  1240.         PANEL_LABEL_STRING, "Refresh",
  1241.         PANEL_NOTIFY_PROC, histo_refresh_proc,
  1242.         NULL);
  1243.     return obj;
  1244. }
  1245.  
  1246. /*
  1247.  * Create object `message2' in the specified instance.
  1248.  */
  1249. Xv_opaque
  1250. histo_display_message2_create(ip, owner)
  1251.     histo_display_objects    *ip;
  1252.     Xv_opaque    owner;
  1253. {
  1254.     Xv_opaque    obj;
  1255.     
  1256.     obj = xv_create(owner, PANEL_MESSAGE,
  1257.         XV_KEY_DATA, INSTANCE, ip,
  1258.         XV_X, 32,
  1259.         XV_Y, 28,
  1260.         PANEL_LABEL_STRING, "Pixel Count: NNN",
  1261.         PANEL_LABEL_BOLD, TRUE,
  1262.         NULL);
  1263.     return obj;
  1264. }
  1265.  
  1266. /*
  1267.  * Create object `magnify' in the specified instance.
  1268.  */
  1269. Xv_opaque
  1270. histo_display_magnify_create(ip, owner)
  1271.     histo_display_objects    *ip;
  1272.     Xv_opaque    owner;
  1273. {
  1274.     extern void        mag_proc();
  1275.     Xv_opaque    obj;
  1276.     
  1277.     obj = xv_create(owner, PANEL_BUTTON,
  1278.         XV_KEY_DATA, INSTANCE, ip,
  1279.         XV_X, 280,
  1280.         XV_Y, 40,
  1281.         PANEL_LABEL_STRING, "Magnify",
  1282.         PANEL_NOTIFY_PROC, mag_proc,
  1283.         NULL);
  1284.     return obj;
  1285. }
  1286.  
  1287. /*
  1288.  * Create object `unmagnify' in the specified instance.
  1289.  */
  1290. Xv_opaque
  1291. histo_display_unmagnify_create(ip, owner)
  1292.     histo_display_objects    *ip;
  1293.     Xv_opaque    owner;
  1294. {
  1295.     extern void        unmag_proc();
  1296.     Xv_opaque    obj;
  1297.     
  1298.     obj = xv_create(owner, PANEL_BUTTON,
  1299.         XV_KEY_DATA, INSTANCE, ip,
  1300.         XV_X, 360,
  1301.         XV_Y, 40,
  1302.         PANEL_LABEL_STRING, "Unmagnify",
  1303.         PANEL_NOTIFY_PROC, unmag_proc,
  1304.         NULL);
  1305.     return obj;
  1306. }
  1307.  
  1308. /*
  1309.  * Create object `restore' in the specified instance.
  1310.  */
  1311. Xv_opaque
  1312. histo_display_restore_create(ip, owner)
  1313.     histo_display_objects    *ip;
  1314.     Xv_opaque    owner;
  1315. {
  1316.     extern void        restore_proc();
  1317.     Xv_opaque    obj;
  1318.     
  1319.     obj = xv_create(owner, PANEL_BUTTON,
  1320.         XV_KEY_DATA, INSTANCE, ip,
  1321.         XV_X, 488,
  1322.         XV_Y, 40,
  1323.         PANEL_LABEL_STRING, "Restore",
  1324.         PANEL_NOTIFY_PROC, restore_proc,
  1325.         NULL);
  1326.     return obj;
  1327. }
  1328.  
  1329. /*
  1330.  * Create object `message5' in the specified instance.
  1331.  */
  1332. Xv_opaque
  1333. histo_display_message5_create(ip, owner)
  1334.     histo_display_objects    *ip;
  1335.     Xv_opaque    owner;
  1336. {
  1337.     Xv_opaque    obj;
  1338.     
  1339.     obj = xv_create(owner, PANEL_MESSAGE,
  1340.         XV_KEY_DATA, INSTANCE, ip,
  1341.         XV_X, 8,
  1342.         XV_Y, 52,
  1343.         PANEL_LABEL_STRING, "Total Intensity: NNN",
  1344.         PANEL_LABEL_BOLD, TRUE,
  1345.         NULL);
  1346.     return obj;
  1347. }
  1348.  
  1349. /*
  1350.  * Create object `histocanv' in the specified instance.
  1351.  */
  1352. Xv_opaque
  1353. histo_display_histocanv_create(ip, owner)
  1354.     histo_display_objects    *ip;
  1355.     Xv_opaque    owner;
  1356. {
  1357.     extern Notify_value    histo_event_proc();
  1358.     extern void    histo_repaint_proc();
  1359.     Xv_opaque    obj;
  1360.     
  1361.     obj = xv_create(owner, CANVAS,
  1362.         XV_KEY_DATA, INSTANCE, ip,
  1363.         XV_X, 0,
  1364.         XV_Y, (int)xv_get(ip->controls2, XV_Y) +
  1365.               (int)xv_get(ip->controls2, XV_HEIGHT) + 2,
  1366.         XV_WIDTH, WIN_EXTEND_TO_EDGE,
  1367.         XV_HEIGHT, 325,
  1368.         CANVAS_REPAINT_PROC, histo_repaint_proc,
  1369.         CANVAS_X_PAINT_WINDOW, TRUE,
  1370.         NULL);
  1371.     xv_set(canvas_paint_window(obj), WIN_CONSUME_EVENTS,
  1372.         WIN_MOUSE_BUTTONS,
  1373.         LOC_MOVE,
  1374.         LOC_DRAG,
  1375.         LOC_WINENTER,
  1376.         LOC_WINEXIT,
  1377.         WIN_ASCII_EVENTS,
  1378.         WIN_LEFT_KEYS,
  1379.         WIN_RIGHT_KEYS,
  1380.         WIN_TOP_KEYS,
  1381.         NULL, NULL);
  1382.     notify_interpose_event_func(canvas_paint_window(obj),
  1383.         (Notify_func) histo_event_proc, NOTIFY_SAFE);
  1384.     /*
  1385.      * This line is here for backwards compatibility. It will be
  1386.      * removed for the next release.
  1387.      */
  1388.     xv_set(canvas_paint_window(obj), XV_KEY_DATA, INSTANCE, ip, NULL);
  1389.     return obj;
  1390. }
  1391.  
  1392.